package com.serene.authority.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.serene.authority.admin.entity.vo.MenuVo;
import com.serene.authority.admin.entity.vo.MenuIndexVo;
import com.serene.authority.admin.entity.MyMenu;
import com.serene.authority.common.utils.Result;

import java.util.List;

/**
 * @author serene
 * @createTime 2020/7/10
 */
public interface MenuService extends IService<MyMenu> {
    /**
     * 返回菜单
     *
     * @param queryName 用户名
     * @param queryType 类型
     * @return
     */
    List<MyMenu> getMenuAll(String queryName, Integer queryType);

    /**
     * 获取菜单信息
     *
     * @param id
     * @return
     */
    MyMenu getMenuById(Integer id);

    /**
     * 菜单树
     *
     * @return
     */
    List<MenuVo> buildMenuAll();

    /**
     * 更新菜单
     *
     * @param menu
     * @return
     */
    Result updateMenu(MyMenu menu);

    /**
     * 保存菜单
     *
     * @param menu
     * @return
     */
    Result<MyMenu> saveMenu(MyMenu menu);

    /**
     * 删除菜单
     *
     * @param id
     * @return
     */
    Result delete(Integer id);

    /**
     * 根据父级菜单id删除菜单
     *
     * @param parentId 父级菜单id
     * @return
     */
    public Integer delMenuById(Integer parentId);

    /**
     * 根据菜单id删除菜单
     *
     * @param menuId 菜单id
     * @return
     */
    public Integer deleteMenuById(Integer menuId);

    /**
     * 通过权限id绘制菜单树
     *
     * @param roleId
     * @return
     */
    List<MenuVo> buildMenuAllByRoleId(Integer roleId);

    /**
     * 通过用户id获取菜单
     *
     * @param userId
     * @return
     */
    List<MenuIndexVo> getMenu(Integer userId);
}
